﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TOAcademias;

namespace DAOAcademias
{

    /*************************************
    Autor: Brian Pari
    Fecha de Creación: 06/02/2011
    Descripción de la Funcionalidad: Clase que contiene metodos que serviran para dar
    soporte a los registros de la entidad Infraestructura.
    **************************************/

    public class DOInfraestructura
    {

        DBModuloAcademiasDataContext dbml;

        public DOInfraestructura()
        {
            dbml = new DBModuloAcademiasDataContext();
        }


        public List<TOInfraestructura> obtenerInfraestructura()
        {

            List<TOInfraestructura> listaInfraestructura = new List<TOInfraestructura>();


            var infraestructura = (from inf in dbml.INFRAESTRUCTURAs
                            select inf
                             );

            foreach (var inf in infraestructura)
            {

                TOInfraestructura toInfraestructura = new TOInfraestructura();
                toInfraestructura.Codigo = inf.COD_INFRAESTRUCTURA;
                toInfraestructura.Nombre = inf.NOM_INFRAESTRUCTURA;
                toInfraestructura.Descripcion = inf.DES_INFRAESTRUCTURA;
                toInfraestructura.Ubicacion = inf.UBI_INFRAESTRUCTURA;
                toInfraestructura.CodigoPadre = inf.COD_PADREINFRAESTRUCTURA;
                listaInfraestructura.Add(toInfraestructura);

            }

            return listaInfraestructura;
        }



        public String generarCodigoInfraestructura()
        {
            List<TOInfraestructura> listaInfraestructura = obtenerInfraestructura();

            int intAux = 0;
            int intTemp = 0;
            foreach (TOInfraestructura infraestructura in listaInfraestructura)
            {
                intTemp = Convert.ToInt32(infraestructura.Codigo.Substring(2));
                if (intTemp > intAux)
                {
                    intAux = intTemp;
                }
            }
            intAux = intAux + 1;

            string strCodigo = "" + intAux;

            strCodigo = "IF000".Substring(0, 5 - strCodigo.Length) + intAux;

            return strCodigo;
        }



        public void insertarInfraestructura(TOInfraestructura toInfraestructura)
        {

            INFRAESTRUCTURA inf = new INFRAESTRUCTURA();
            inf.COD_INFRAESTRUCTURA = generarCodigoInfraestructura();            
            inf.NOM_INFRAESTRUCTURA = toInfraestructura.Nombre;
            inf.DES_INFRAESTRUCTURA=toInfraestructura.Descripcion;
            inf.UBI_INFRAESTRUCTURA=toInfraestructura.Ubicacion;
            inf.COD_PADREINFRAESTRUCTURA = toInfraestructura.CodigoPadre;

            dbml.INFRAESTRUCTURAs.InsertOnSubmit(inf);
            dbml.SubmitChanges();

        }

        public void modificarInfraestructura(TOInfraestructura toInfraestructura)
        {
            var infraestructura = (from inf in dbml.INFRAESTRUCTURAs
                            where inf.COD_INFRAESTRUCTURA == toInfraestructura.Codigo
                            select inf).Single();

            infraestructura.NOM_INFRAESTRUCTURA = toInfraestructura.Nombre;
            infraestructura.DES_INFRAESTRUCTURA = toInfraestructura.Descripcion;
            infraestructura.UBI_INFRAESTRUCTURA = toInfraestructura.Ubicacion;
            infraestructura.COD_PADREINFRAESTRUCTURA = toInfraestructura.CodigoPadre;

            dbml.SubmitChanges();

        }




    }
}
